パソコン活用研究ラピュタへの道(アセンブラ、DOS、Windows、旧型PCの活用研究)
スタートアップ
1 電源ONでスタート
パソコンの電源がON、あるいはリセットされると、パソコンはある決まった場所から
スタートします。どこからスタートするかはCPUによりあらかじめ、決めれれております。
例えばPC2001のμCOM87の場合、0H(Hは16進数を表す)からスタートします(推測)。
究極の8Bit
CPUと言われた6809はFFFEH(とFFFFH)に格納されている、いわゆる
リセットベクトル(=スタート番地)を読み込み、リセットベクトルの番地からスタートします。
富士通の往年の名機FM−8/7ではリセットベクトルはFE00になっていますので、FE00H
からスタートします。皆さんおなじみの8086(Pentiumの祖先)はFFFF0Hからスタート
します。
それではPC2001のスタートアップルーチンをみていきましょう。
なお、以下に掲載するディスアセンブルのリストは、RS232Cを介してPC2001のROMを
windows機に送信し、自作のPc2001ディスアセンブラでディスアセンブルしたものです。
PC2001ディスアセンブラのソースコードおよび解説は「パソコン活用研究/Visual Basic/PC2001ディスアセンブラ」にあります。
2 PC2001スタートアップ
PC2001(μCOM87)では0Hより、リセット時および各種割り込み発生時のエントリが
集まっており、それぞれ適切な場所に飛ばしています。
0000 54 B0 02 T.. jmp 2B0h リセット、電源ONエントリ 2B0Hへジャンプ 0003 00 . nop 0004 DD . jr 22h 割り込みINT0エントリ−−>22Hに飛んで[BC] 0005 00 . nop にFF90Hから格納されている番地(=INT0 0006 00 . nop 飛び先)をセット 0007 00 . nop 0008 48 1E H. push b 000A 70 1F 92 FFp... lbcd FF92h 割り込みINTTエントリ−−>FF92Hから格納 000E CC . jr 1Bh されている番地を[BC]にセット 000F 00 . nop 0010 64 9B 04 d.. ori mk,4h 0013 48 20 H ei 0015 48 1E H. push b 0017 70 1F 94 FFp... lbcd FF94h 割り込みINT1エントリ−−>FF94Hから格納 001B 48 3E H> push h されている番地を[BC]にセット 001D 48 2E H. push d 001F 48 0E H. push v 0021 73 s jb [BC]のアドレスにジャンプ 0022 48 1E H. push b 0024 70 1F 90 FFp... lbcd FF90h 0028 F2 . jr 1Bh |
リセット、電源ON時は2B0Hへ 割り込みINT0 ではFF90Hから格納されている番地へ 割り込みINTT ではFF92Hから格納されている番地へ 割り込みINT1 ではFF94Hから格納されている番地へ 飛びます |